package com.sakura.oj.model.dto.problem;

import com.sakura.oj.model.dto.judge.JudgeCaseAddRequest;
import com.sakura.oj.model.entity.JudgeConfig;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 更新题目请求
 * todo 接受判题用例、标签等更新信息。以便修改数据
 *
 * @author sakura
 */
@Data
public class ProblemUpdateRequest implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @NotNull(message = "题目id必须传递")
    private Long id;

    /**
     * 内容
     */
    @NotBlank(message = "题目内容不能为空")
    private String content;

    /**
     * 难度；EASY简单，MEDIUM中等，HARD困难
     */
    private String difficulty;

    /**
     * 判题配置（json 对象）
     */
    @NotNull(message = "判题配置不能为空")
    private JudgeConfig judgeConfig;

    /**
     * 标签列表
     */
    private List<Long> tags;

    /**
     * 判题用例列表
     */
    private List<JudgeCaseAddRequest> judgeCaseList;

    /**
     * 状态（0，未发布。1 发布）
     */
    @Max(value = 1, message = "状态值不合法")
    @Min(value = 0, message = "状态值不合法")
    private Integer status;
}